"""
做到哪一步，需要哪些元素 以及需要哪些操作 就进行页面对象内容添加；
后面再用的时候 再补充。

一个页面的元素特别多 没有必要一次性全部写出来。

"""
import time

from loguru import logger
from selenium.webdriver.common.by import By
from common.base_page import BasePage

class HomePage(BasePage):
    # 页面元素元素定位: 定义为类的属性 --元组
    loc_login = (By.XPATH, '//a[text()="登录"]')
    # 欢迎提示信息
    welcome_tips_locator = (By.XPATH, '//span[text()="欢迎来到柠檬班"]')
    # 用户名
    username_text_locator = (By.XPATH, '//a[@class="link-name"]')
    # 个人中心
    user_center_link = (By.XPATH, '//span[text()="个人中心"]')
    # 搜索框
    search_input = (By.XPATH, '//div[@class="search-input-box"]/input')
    # 搜索按钮
    search_button = (By.XPATH, '//div[@class="search-input-box"]/following-sibling::input')
    # 购物车
    cart_link = (By.XPATH, '//span[@data-route="cart"]')
    # 我的订单链接
    my_order_link = (By.XPATH, '//span[@data-route="order"]')


    # 点击首页里的登录链接按钮 打开登录页面 操作-- 定义为实例方法
    def click_login_link(self):
        logger.info(f"-----------点击登录链接---------")
        self.click_element(self.loc_login)

    # 点击个人中心链接- 直接调用click_element方法
    def click_user_center(self):
        logger.info(f"-----------点击个人中心链接---------")
        # time.sleep(1) # 要加一个等待
        self.click_element(self.user_center_link)

    # 获取用户名方法  -- 这只用户名作为方法的返回值
    def get_username(self):
        logger.info(f"-----------获取用户名操作---------")
        return self.get_text(self.username_text_locator)

    # 判断欢迎提示语存在
    def is_weltext_dispaly(self):
        logger.info(f"-----------欢迎提示语是否存在的判断---------")
        return self.elememnt_display(self.welcome_tips_locator)

    # 首页中进行商品的搜索：--商品名字的参数化
    def search_prod(self, prod_name):
        logger.info(f"-------搜索商品{prod_name}-----")
        self.input_text(self.search_input, prod_name)
        self.click_element(self.search_button)

    # 点击购物车链接
    def click_cart_link(self):
        logger.info(f"------点击购物车按钮-----")
        self.click_element(self.cart_link)

    # 点击我的订单链接
    def click_my_order_link(self):
        logger.info(f"-------点击我的订单链接-----")
        self.click_element(self.my_order_link)
